package exam.huawei.string;

import java.util.*;

/**
 * 整数编码
 * 实现一种整数编码方法，使得待编码的数字越小，编码后所占用的字节数越小。
 * 编码规则如下:
 * 1.编码时7位一组，每个字节的低7位用于存储待编码数字的补码
 * 2.字节的最高位表示后续是否还有字节，置1表示后面还有更多的字节，置0表示当前字节为最后一个字节.
 * 3.采用小端序编码，低位和低字节放在低地址上.
 * 4.编码结果按16进制数的字符格式输出，小写字母需转换为大写字母
 */
public class Example05 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println(getResult(sc.nextLong()));
    }

    public static String getResult(long num) {
        String bin = Long.toBinaryString(num);

        StringBuilder ans = new StringBuilder();

        int end = bin.length();
        while (end - 7 > 0) {
            ans.append(getHexString("1" + bin.substring(end - 7, end)));
            end -= 7;
        }

        if (end >= 0) {
            ans.append(getHexString("0" +bin.substring(0, end)));
        }

        return ans.toString();
    }

    public static String getHexString(String binStr) {
        String hexStr = Integer.toHexString(Integer.parseInt(binStr, 2));
        if (hexStr.length() == 1) hexStr = "0" + hexStr;
        return hexStr.toUpperCase();
    }


}